package com.guiguli.InnerClassDemo6;

public class Test {
    public static void main(String[] args) {
        /*
            new 类名或接口名(){
                重写方法
            };
         */

        //编写匿名内部类的代码        Swim()表示这个类要实现Swim的接口，匿名类实际是指{}这个整体，不包括Swim()
        var ss =new Swim(){                 //new实际是new这个匿名类出对象,为空参构造，与Swim无关
            @Override
            public void swim(){
                System.out.println("重写了游戏");
            }
        };
        ss.swim();

        var s2 = new Animal(){  //Animal是类，那么就是extends继承关系，上面的是实现关系
            @Override
            public void eat(){
                System.out.println("匿名类重写了Animal的eat方法");
            }
        };
        s2.eat();

        method(s2); //s2是Animal的子类对象 这也就是匿名类的方便之处了，不用单独再定义一个类

    }

    public static void method(Animal a){
        a.eat();
    }

}
